package com.hwl.commonutils.result;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @author long
 * @since 2021-09-22
 */
@Data
@ApiModel("全局统一返回结果")
public class RespBean {

    @ApiModelProperty(value = "是否成功")
    private Boolean success;

    @ApiModelProperty(value = "返回状态码")
    private Integer code;

    @ApiModelProperty(value = "返回消息")
    private String message;

    @ApiModelProperty(value = "返回数据")
    private Object data;

    public RespBean() {
    }

    public static RespBean ok() {
        RespBean r = new RespBean();
        r.setSuccess(ResultCodeEnum.SUCCESS.getSuccess());
        r.setCode(ResultCodeEnum.SUCCESS.getCode());
        r.setMessage(ResultCodeEnum.SUCCESS.getMessage());
        return r;
    }

    public static RespBean error() {
        RespBean r = new RespBean();
        r.setSuccess(ResultCodeEnum.UNKNOWN_REASON.getSuccess());
        r.setCode(ResultCodeEnum.UNKNOWN_REASON.getCode());
        r.setMessage(ResultCodeEnum.UNKNOWN_REASON.getMessage());
        return r;
    }

    public static RespBean setResult(ResultCodeEnum resultCodeEnum) {
        RespBean r = new RespBean();
        r.setSuccess(resultCodeEnum.getSuccess());
        r.setCode(resultCodeEnum.getCode());
        r.setMessage(resultCodeEnum.getMessage());
        return r;
    }

    public RespBean success(Boolean success) {
        this.setSuccess(success);
        return this;
    }

    public RespBean message(String message) {
        this.setMessage(message);
        return this;
    }

    public RespBean code(Integer code) {
        this.setCode(code);
        return this;
    }

    public RespBean data(Object data) {
        this.setData(data);
        return this;
    }
}
